Computing devices are often configured to utilize software packages in order to facilitate computer-executable application development. A software package may include computer-executable instructions, an identifier for the software package, a version number for the software package, a list of software dependencies for the software package (i.e., a list of other software packages that must be installed on a computing device in order for the software package to function on the computing device), instructions for installing and using the software package, ownership information, and authorship information.
Public software repository applications have been developed to facilitate the dissemination of software packages. A public software repository application executes on a server computing device and provides other computing devices with access to software packages stored in a public data store of the server computing device. For example, the public software repository application can receive a software package (or an update to a software package) from a computing device associated with an organization or an individual tasked with developing and maintaining the software package. The public software repository application can then store the software package in the public data store. In another example, the public software repository application can receive an identifier for the software package (or an identifier for an updated version of the software package) from a second computing device, and the public software repository application can retrieve the software package from the public data store based on the identifier and transmit the software package to the second computing device. The second computing device may then incorporate the software package into a computer-executable application being developed on the second computing device and/or utilize the software package in executing another computer-executable application.
There are various drawbacks associated with public software repository applications. First, a software organization and/or software developer may wish to limit access to a software package that the organization and/or the developer has created. This is not possible when using a public software repository application as the public software repository application is configured to receive and transmit software packages to computing devices operated by the general public. Second, the public software repository application may include multiple versions of a software package, which can cause confusion among software developers. Third, data security policies of an organization may often make use of a public software repository application undesirable.
As such, private software repository applications have been developed. A private software repository application executes on a server computing device including a private data store to which access is restricted. For example, a private software repository application can be maintained by a software development organization. The private software repository application can provide access to a private data store only to computing devices associated with the organization (e.g., computing devices operated by members of the organization). Thus, a private software repository application may be unable to communicate with computing devices outside of the control of the organization, such as a server computing device executing a public software repository application.
While a private software repository application may mitigate some of the disadvantages associated with a public software repository application by restricting access to the private data store, maintaining software dependencies of the software packages in the private data store requires a computing device operated by a user to receive extensive user input. For instance, a user may determine that a software package (or an update to a software package) is required in order for a computer-executable application (or a part of a computer-executable application) stored in the private data store to function. A computing device operated by a user will receive input indicative of the software package. Responsive to receiving the input, the computing device will transmit the identifier to a public software repository application, whereupon the public software repository application will retrieve the software package using the identifier and transmit the software package to the computing device operated by the user.
The computing device will then receive input from the user causing the computing device to open the software package and present a list of dependent software packages for the software package on a display of the computing device. The computing device may then receive further input from the user causing the computing device to present a list of software packages stored in the private data store on the display. The computing device may then receive even more input from the user in order to cross-reference the list of dependent software packages against the list of software packages stored in the private data to ensure that (a) each dependent software package in the list of dependent software packages is stored in the private data store and/or (b) that version numbers of the software packages in the private data store match version numbers of the dependent software packages in the list of dependent software packages.
This process may be repeated for other software packages, such as for each software package in a computer-executable application comprising a plurality of software packages. Furthermore, a dependent software package in the list of dependent software packages may in turn have its own list of dependent software packages, thus requiring the computing device operated by the user to receive even more user input.